UCF STIG Viewer Logo

The macOS system must configure SSHD ClientAliveCountMax to 1.


Overview

Finding ID Version Rule ID IA Controls Severity
V-259436 APPL-14-000052 SV-259436r940930_rule Medium
Description
If SSHD is enabled it must be configured with the Client Alive Maximum Count set to 1. This will set the number of client alive messages which may be sent without the SSH server receiving any messages back from the client. If this threshold is reached while client alive messages are being sent, the SSH server will disconnect the client, terminating the session. The client alive messages are sent through the encrypted channel and therefore will not be spoofable. The client alive mechanism is valuable when the client or server depend on knowing when a connection has become unresponsive. Note: This setting is not intended to manage idle user sessions where there is no input from the client. Its purpose is to monitor for interruptions in network connectivity and force the session to terminate after the connection appears to be broken. Note: /etc/ssh/sshd_config will be automatically modified to its original state following any update or major upgrade to the operating system.
STIG Date
Apple macOS 14 (Sonoma) Security Technical Implementation Guide 2024-01-10

Details

Check Text ( C-63175r940928_chk )
Verify the macOS system is configured to set the SSHD ClientAliveCountMax to 1 with the following command:

/usr/sbin/sshd -G | /usr/bin/awk '/clientalivecountmax/{print $2}'

If the result is not "1", this is a finding.
Fix Text (F-63083r940929_fix)
Configure the macOS system to set the SSHD ClientAliveCountMax to 1 with the following command:

include_dir=$(/usr/bin/awk '/^Include/ {print $2}' /etc/ssh/sshd_config | /usr/bin/tr -d '*')

if [[ -z $include_dir ]]; then
/usr/bin/sed -i.bk "1s/.*/Include \/etc\/ssh\/sshd_config.d\/\*/" /etc/ssh/sshd_config
fi

/usr/bin/grep -qxF 'clientalivecountmax 1' "${include_dir}01-mscp-sshd.conf" 2>/dev/null || echo "clientalivecountmax 1" >> "${include_dir}01-mscp-sshd.conf"

for file in $(ls ${include_dir}); do
if [[ "$file" == "100-macos.conf" ]]; then
continue
fi
if [[ "$file" == "01-mscp-sshd.conf" ]]; then
break
fi
/bin/mv ${include_dir}${file} ${include_dir}20-${file}
done